3d5beece876c6210bb21bc56728681dcc1b7653e,core/java/src/net/i2p/crypto/AESEngine.java,AESEngine,safeDecrypt,#number#SessionKey#number#,109

Before Change


        }

        int cur = 0;
        byte h[] = _context.sha().calculateHash(iv).getData();
        for (int i = 0; i < Hash.HASH_LENGTH; i++) {
            if (decr[i] != h[i]) {
                _log.error("Hash does not match [key=" + sessionKey + " / iv =" + DataHelper.toString(iv, iv.length)

After Change


            return null;
        }

        byte h[] = SimpleByteCache.acquire(Hash.HASH_LENGTH);
        _context.sha().calculateHash(iv, 0, 16, h, 0);
        boolean eq = DataHelper.eq(decr, 0, h, 0, Hash.HASH_LENGTH);
        SimpleByteCache.release(h);
        if (!eq) {
                _log.error("Hash does not match [key=" + sessionKey + " / iv =" + DataHelper.toString(iv, iv.length)
                           + "]", new Exception("Hash error"));